package entidades;

import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


@Entity
@Table(name = "Accidentes")
public class Accidente {
	@Id
	@GeneratedValue
	@Column(name="ID_ACCIDENTE",nullable=false)
	private int idAccidente;
	
	@Temporal(TemporalType.DATE)
	@Column(name="FECHA",nullable=false)
	private Date fecha;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name= "ID_FORMA_ACCIDENTE",nullable=false)
	private FormaAccidente formaAccidente;
	
	@ManyToOne(fetch=FetchType.LAZY)	
	@JoinColumn(name= "ID_MATERIAL_ASOCIADO",nullable=false)
	private MaterialAsociado materialAsociado;
	
	@OneToMany (cascade=CascadeType.ALL, fetch=FetchType.LAZY) 
	private List<AccidenteLesion> accidentesLesiones;
	
	@OneToOne 
	@JoinColumn (name="ID_OBRERO",nullable=false)
	private Obrero obreroAsociado;
	
	@OneToOne 
	@JoinColumn (name="ID_PROYECTO",nullable=false)
	private Proyecto proyectoAsociado;
	
	
	public Accidente() {
		
	}



	public int getIdAccidente() {
		return idAccidente;
	}

	public void setIdAccidente(int idAccidente) {
		this.idAccidente = idAccidente;
	}


	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}


	public FormaAccidente getFormaAccidente() {
		return formaAccidente;
	}

	public void setFormaAccidente(FormaAccidente formaAccidente) {
		this.formaAccidente = formaAccidente;
	}

	public MaterialAsociado getMaterialAsociado() {
		return materialAsociado;
	}

	public void setMaterialAsociado(MaterialAsociado materialAsociado) {
		this.materialAsociado = materialAsociado;
	}


	public List<AccidenteLesion> getAccidentesLesiones() {
		return accidentesLesiones;
	}


	public void setAccidentesLesiones(List<AccidenteLesion> accidentesLesiones) {
		this.accidentesLesiones = accidentesLesiones;
	}


	public Obrero getObreroAsociado() {
		return obreroAsociado;
	}


	public void setObreroAsociado(Obrero obreroAsociado) {
		this.obreroAsociado = obreroAsociado;
	}

	public void setProyectoAsociado(Proyecto proyectoAsociado) {
		this.proyectoAsociado = proyectoAsociado;
	}



	public Proyecto getProyectoAsociado() {
		return proyectoAsociado;
	}

	
}
